package ua.edu.test.tab1actions.common.fragments;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import ua.edu.test.AtributesBean;
import ua.edu.test.MainActivity;
import ua.edu.test.R;
import ua.edu.test.db.Card;
import ua.edu.test.db.DBWork;

import java.util.List;

/**
 * Created by Max on 11.07.2014.
 * <p/>
 * Таб: Действия
 * Фрагмент 2 - список карт, которые добавил/добавляет пользователь
 * в процессе использования приложения.
 * Этот фрагмент всегда будет показватся вторым (после фрагмента 1 - список возможных действий)
 * вне зависимости от настроек и т.д. !!!
 * Если пользователь не добавил ни одной карты - показать textView.setText("Нет добавленных карт")
 */
public class UserCards extends Fragment {

    public static final String LOG_TAG = UserCards.class.getName();

    private Button btnAddCardActionFragment;
    private ListView listViewUserCards;
    CardsAdapter cardsAdapter;
    //хранит все карты ползователя, а у каждой карты есть свои поля(имя, название, ...)
    private List<Card> cardsFromDB;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_tab1_user_cards, null);

        cardsFromDB = DBWork.getCardsFromDB();
        cardsAdapter = new CardsAdapter(getActivity(), cardsFromDB);
        listViewUserCards = (ListView) view.findViewById(R.id.listViewUserCards);
        listViewUserCards.setAdapter(cardsAdapter);
        listViewUserCards.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                final MainActivity mainActivity = (MainActivity) getActivity();

                // запоминаем в bean , имя  выбранной карты из ListView
                AtributesBean.getInstance().setSelCardName(cardsFromDB.get(position).getNameCard());

                // переход к действию (уникальному фрагменту), которое было выбрано в первом фрагменте (ActionFragment)
                mainActivity.showTab1SelUniqueFr(AtributesBean.getInstance().getSelAction());

            }
        });


        //обработчик для клавиши "добавить карту" [действия - карты пользователя]
        btnAddCardActionFragment = (Button) view.findViewById(R.id.btnAddCardActionFragment);
        btnAddCardActionFragment.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                MainActivity mainActivity = (MainActivity) getActivity();
                mainActivity.showTab1AddCard();
            }
        });

        return view;
    }


    public class CardsAdapter extends BaseAdapter {
        Context cont;
        List<Card> objects;
        LayoutInflater lInflater;

        public CardsAdapter(Context context, List<Card> myList) {
            cont = context;
            objects = myList;
            lInflater = (LayoutInflater) cont.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        public int getCount() {
            return objects.size();
        }

        public Object getItem(int position) {
            return objects.get(position);
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView,
                            ViewGroup parent) {
            View row = convertView;
            if (row == null) {
                row = lInflater.inflate(R.layout.pattern_tab1_user_cards_list_view_row, parent, false);
            }
            //В icon устанавливать нужные иконки банка, как в MyCards
            ImageView icon = (ImageView)row.findViewById(R.id.imgIcon);
            TextView cardName = (TextView) row.findViewById(R.id.cardName);
            TextView cardBank = (TextView) row.findViewById(R.id.cardBank);
            cardName.setText(cardsFromDB.get(position).getNameCard());
            cardBank.setText(cardsFromDB.get(position).getBankName());
            return row;
        }
    }


}
